
package tp.igl.View;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import tp.igl.Controler.MasqueControler;
import tp.igl.Masque;

/**
 * <b> Cette class est utilisée pour recuperer un masque d'adresse depuis l'interface graphique,
 * elle n'accepte que les adresses IP valide.
 * </b>
 * @author Redouane
 * @see Masque
 * @see MasqueControler
 */
public class MasqueField extends AdresseField{
    

    /**
     *Constructeur MasqueField
     * <p>
     * A la construction il initialise les octes du masque, ainsi il ajoute
     * les controleurs pour chacun  d'eu .
     * </p>
     * @param masque Le MAsque qui recevra les valeurs lu.
     * @see Masque
     */
    public MasqueField(Masque masque) {
        super(masque);
        for(SegmentField seg: getListeDesSegements()){
            seg.setOnAction(new MasqueControler(this));
        }
        VBox vb=new VBox(1);
        Button b1=new Button("^");
        Button b2=new Button("v");
        b1.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent t) {
                    MasqueField.this.toNextMasque();
                    MasqueField.this.fire();
            };
        });
        
        b2.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent t) {
                    MasqueField.this.toPreviousMasque();
                    MasqueField.this.fire();
            };
        });
                            
        
        b1.setStyle("-fx-font: 8 arial; -fx-base: #b6e7c9; -fx-background-radius: 2;");
        b2.setStyle("-fx-font: 8 arial; -fx-base: #b6e7c9; -fx-background-radius: 2");
        vb.getChildren().add(b1);
        vb.getChildren().add(b2);
        this.getChildren().add(vb);
    }
    
       
    /**
     *Met a  jour les Octets du masque avec le prochaine masque valide.
     */
    public void toNextMasque(){
        ((Masque)adresse).toNextMasque();
        refreshFields(adresse);
    }

    /**
     * Met a  jour les Octets du masque avec le premier masque valide qui le précede.
     */
    public void toPreviousMasque() {
        ((Masque)adresse).toPreviousMasque();
        refreshFields(adresse);
    }
}
